home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac Power 1997 December
/
MACPOWER-1997-12.ISO.7z
/
MACPOWER-1997-12.ISO
/
AMUG
/
PROGRAMMING
/
Raven 1.2 Examples.sit
/
Raven 1.2 Examples
/
Quill
/
Source
/
ViewCommands.h
< prev
next >
Wrap
Text File
|
1997-07-28
|
13KB
|
569 lines
/*
* File: ViewCommands.h
* Summary: Command objects for manipulating views.
* Written by: Jesse Jones
*
* Copyright ゥ 1996 Jesse Jones.
* For conditions of distribution and use, see copyright notice in ZTypes.h
*
* Change History (most recent first):
*
* <-> 8/29/96 JDJ Created
*/
#pragma once
#include <ZGeometry.h>
#include <ZHandle.h>
#include <ZUndoableCommand.h>
#include <ZView.h>
//-----------------------------------
// Forward References
//
class CViewContainer;
class TPane;
class TView;
template<class TYPE, class ALLOCATOR> class list;
// ===================================================================================
// class CResizePaneCommand
// ===================================================================================
class CResizePaneCommand : public TUndoableCommand {
typedef TUndoableCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CResizePaneCommand();
CResizePaneCommand(TPane* pane, const TRect& newFrame);
CResizePaneCommand(TPane* pane, const TRect& oldFrame, const TRect& newFrame);
//-----------------------------------
// Inherited API
//
public:
virtual string GetText() const;
virtual bool IsValid() const;
protected:
virtual void OnDo();
virtual void OnUndo();
virtual void OnRedo();
//-----------------------------------
// Member data
//
protected:
CViewContainer* mContainer;
TSafePtr<TPane> mPane;
TRect mOldFrame;
TRect mNewFrame;
};
// ===================================================================================
// class CPaneEditCommand
// ===================================================================================
class CPaneEditCommand : public TUndoableCommand {
typedef TUndoableCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CPaneEditCommand();
CPaneEditCommand(CViewContainer* container, bool addSelection = true);
CPaneEditCommand(CViewContainer* container, TUndoMgr* context, bool addSelection = true);
//-----------------------------------
// Inherited API
//
public:
virtual bool IsValid() const;
//-----------------------------------
// Types
//
protected:
struct SInfo {
TSafePtr<TPane> pane;
TSafePtr<TView> super;
SPaneInfo oldInfo;
SPaneInfo newInfo;
SInfo() : pane(nil), super(nil) {}
SInfo(TPane* subPane) : pane(subPane), super(pane->GetSuperView()) {oldInfo = newInfo = pane->GetInfo();}
bool operator==(const SInfo& rhs) const {return pane == rhs.pane;}
bool operator<(const SInfo& rhs) const {return pane < rhs.pane;}
// ・・ Should not be neccessary.
bool operator!=(const SInfo& rhs) const {return pane != rhs.pane;}
};
//-----------------------------------
// Member data
//
protected:
CViewContainer* mContainer;
list<SInfo, allocator<SInfo> >* mPanes;
};
// ===================================================================================
// class CAddPanesCommand
// ===================================================================================
class CAddPanesCommand : public CPaneEditCommand {
typedef CPaneEditCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CAddPanesCommand() = 0;
CAddPanesCommand(CViewContainer* container, bool addSelection = true);
CAddPanesCommand(CViewContainer* container, TUndoMgr* context, bool addSelection = true);
//-----------------------------------
// New API
//
protected:
virtual void OnAdd();
virtual void OnRemove();
};
// ===================================================================================
// class CAddSubPanesCommand
// ===================================================================================
class CAddSubPanesCommand : public CAddPanesCommand {
typedef CAddPanesCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CAddSubPanesCommand();
CAddSubPanesCommand(CViewContainer* container, TView* super, TUndoMgr* context);
//-----------------------------------
// New API
//
public:
void AddPane(TPane* newPane);
//-----------------------------------
// Inherited API
//
public:
virtual string GetText() const;
protected:
virtual void OnDo();
virtual void OnUndo();
virtual void OnRedo();
//-----------------------------------
// Member data
//
protected:
TView* mSuper;
};
// ===================================================================================
// class CDeletePanesCommand
// ===================================================================================
class CDeletePanesCommand : public CAddPanesCommand {
typedef CAddPanesCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CDeletePanesCommand();
CDeletePanesCommand(CViewContainer* container);
//-----------------------------------
// Inherited API
//
public:
virtual string GetText() const;
protected:
virtual void OnDo();
virtual void OnUndo();
virtual void OnRedo();
};
// ===================================================================================
// class CDuplicatePanesCommand
// ===================================================================================
class CDuplicatePanesCommand : public CAddPanesCommand {
typedef CAddPanesCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CDuplicatePanesCommand();
CDuplicatePanesCommand(CViewContainer* container);
//-----------------------------------
// Inherited API
//
public:
virtual string GetText() const;
protected:
virtual void OnDo();
virtual void OnUndo();
virtual void OnRedo();
};
// ===================================================================================
// class CMovePanesCommand
// ===================================================================================
class CMovePanesCommand : public CPaneEditCommand {
typedef CPaneEditCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CMovePanesCommand();
CMovePanesCommand(CViewContainer* container, TView* super, TUndoMgr* context);
//-----------------------------------
// New API
//
public:
void AddPane(TPane* newPane, const TPoint& newLoc);
//-----------------------------------
// Inherited API
//
public:
virtual string GetText() const;
protected:
virtual void OnDo();
virtual void OnUndo();
virtual void OnRedo();
//-----------------------------------
// Member data
//
protected:
TView* mNewSuper;
};
// ===================================================================================
// class CCopyPanesCommand
// ===================================================================================
class CCopyPanesCommand : public CAddPanesCommand {
typedef CAddPanesCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CCopyPanesCommand();
CCopyPanesCommand(CViewContainer* container);
//-----------------------------------
// Inherited API
//
public:
virtual string GetText() const;
protected:
virtual void OnDo();
virtual void OnUndo();
virtual void OnRedo();
//-----------------------------------
// Member data
//
protected:
THandle mOldScrap;
THandle mNewScrap;
};
// ===================================================================================
// class CCutPanesCommand
// ===================================================================================
class CCutPanesCommand : public CCopyPanesCommand {
typedef CCopyPanesCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CCutPanesCommand();
CCutPanesCommand(CViewContainer* container);
//-----------------------------------
// Inherited API
//
public:
virtual string GetText() const;
protected:
virtual void OnDo();
virtual void OnUndo();
virtual void OnRedo();
};
// ===================================================================================
// class CPastePanesCommand
// ===================================================================================
class CPastePanesCommand : public CAddPanesCommand {
typedef CAddPanesCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CPastePanesCommand();
CPastePanesCommand(CViewContainer* container, TView* superView);
//-----------------------------------
// Inherited API
//
public:
virtual string GetText() const;
protected:
virtual void OnDo();
virtual void OnUndo();
virtual void OnRedo();
//-----------------------------------
// Member data
//
protected:
TView* mSuper;
};
// ===================================================================================
// class COffsetPanesCommand
// ===================================================================================
class COffsetPanesCommand : public CPaneEditCommand {
typedef CPaneEditCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~COffsetPanesCommand() = 0;
COffsetPanesCommand(CViewContainer* container);
//-----------------------------------
// Inherited API
//
protected:
virtual void OnDo();
virtual void OnUndo();
virtual void OnRedo();
};
// ===================================================================================
// class CNudgePaneCommand
// ===================================================================================
class CNudgePaneCommand : public COffsetPanesCommand {
typedef COffsetPanesCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CNudgePaneCommand();
CNudgePaneCommand(CViewContainer* container, char key);
// key should be one of the arrow keys
//-----------------------------------
// New API
//
public:
virtual bool CanNudge(CViewContainer* container, char key) const;
virtual void Nudge();
//-----------------------------------
// Inherited API
//
public:
virtual string GetText() const;
protected:
virtual void OnDo();
virtual void OnUndo();
virtual void OnRedo();
//-----------------------------------
// Member data
//
protected:
char mKey;
bool mExecuted;
};
// ===================================================================================
// class CAlignLeftCommand
// ===================================================================================
class CAlignLeftCommand : public COffsetPanesCommand {
typedef COffsetPanesCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CAlignLeftCommand();
CAlignLeftCommand(CViewContainer* container);
//-----------------------------------
// Inherited API
//
public:
virtual string GetText() const;
};
// ===================================================================================
// class CAlignRightCommand
// ===================================================================================
class CAlignRightCommand : public COffsetPanesCommand {
typedef COffsetPanesCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CAlignRightCommand();
CAlignRightCommand(CViewContainer* container);
//-----------------------------------
// Inherited API
//
public:
virtual string GetText() const;
};
// ===================================================================================
// class CAlignTopCommand
// ===================================================================================
class CAlignTopCommand : public COffsetPanesCommand {
typedef COffsetPanesCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CAlignTopCommand();
CAlignTopCommand(CViewContainer* container);
//-----------------------------------
// Inherited API
//
public:
virtual string GetText() const;
};
// ===================================================================================
// class CAlignBottomCommand
// ===================================================================================
class CAlignBottomCommand : public COffsetPanesCommand {
typedef COffsetPanesCommand Inherited;
//-----------------------------------
// Initialization/Destruction
//
public:
virtual ~CAlignBottomCommand();
CAlignBottomCommand(CViewContainer* container);
//-----------------------------------
// Inherited API
//
public:
virtual string GetText() const;
};